package com.xiaoyudeguang.annotations;

import org.springframework.core.annotation.AliasFor;
import org.springframework.http.MediaType;
import org.springframework.web.bind.annotation.RequestMethod;

import java.lang.annotation.*;

/**
 * @author 赵光
 */
@Target({ElementType.TYPE, ElementType.METHOD})
@Retention(RetentionPolicy.RUNTIME)
@Documented
@org.springframework.web.bind.annotation.RequestMapping
public @interface RequestMapping {

    /**
     * 请求路径
     *
     * @return
     */
    @AliasFor(annotation = org.springframework.web.bind.annotation.RequestMapping.class)
    String value() default "";

    /**
     * 请求类型
     *
     * @return
     */
    @AliasFor(annotation = org.springframework.web.bind.annotation.RequestMapping.class)
    String[] consumes() default MediaType.ALL_VALUE;

    /**
     * 响应类型
     *
     * @return
     */
    @AliasFor(annotation = org.springframework.web.bind.annotation.RequestMapping.class)
    String[] produces() default MediaType.APPLICATION_JSON_VALUE;

    /**
     * 请求方式
     *
     * @return
     */
    RequestMethod[] method() default RequestMethod.POST;

    /**
     * 标题
     *
     * @return
     */
    String summary();

    /**
     * 描述
     *
     * @return
     */
    String description() default "";

    /**
     * 维护人员
     *
     * @return
     */
    String[] developers() default "";

    /**
     * 排序
     */
    int order() default Integer.MIN_VALUE;

    /**
     * 返回类型
     *
     * @return
     */

    Class<?> returnType() default Void.class;

    /**
     * 是否权限校验
     *
     * @return
     */
    boolean checkAuth() default true;

    /**
     * 是否需要权限校验
     *
     * @return
     */
    String permission() default "";

}
